<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>模块模式</title>
</head>
<body>
	<h1>模块模式</h1>
</body>
<script type="text/javascript">
    // 模块模式的思路是为单体模式添加私有变量和私有方法能够减少全局变量的使用
    // 场景：如果我们必须创建一个对象并以某些数据进行初始化，同时还要公开一些能够访问这些私有数据的方法，那么我们这个时候就可以使用模块模式了。

    function CustomType() {
        this.name = "tugenhua";
    };
    CustomType.prototype.getName = function(){
        return this.name;
    }
    var application = (function(){
        // 定义私有
        var privateA = "aa";
        // 定义私有函数
        function A(){};

        // 实例化一个对象后，返回该实例，然后为该实例增加一些公有属性和方法
        var object = new CustomType();

        // 添加公有属性
        object.A = "aa";
        // 添加公有方法
        object.B = function(){
            return privateA;
        }
        // 返回该对象
        return object;
    })();


</script>
</html>